package com.bd.scm.module.common;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

/**
 * 编号生成
 */
@Slf4j
public class CodeGenerate {

    /**
     * 生成子部门编号
     * @param number
     * @return
     */
    public static String DeptNumberGenerate(String number) {
        try {
            //48-57     0~9
            //65-90     A~Z

            //规则：从00开始，个位满9进A，满Z进十

            //右边取2位数
            String s1 = StringUtils.right(number, 2);

            //剩余部分
            String s2 = StringUtils.left(number, number.length() - s1.length());
            System.out.println(s2);

            //十位数
            String sLeft = StringUtils.left(s1, 1);
            //个位数
            String sRight = StringUtils.right(s1, 1);

            //十位数ascii
            int a1 = (int) sLeft.toCharArray()[0];

            //======================个位数处理========================
            //个人数ascii
            int a2 = (int) sRight.toCharArray()[0];
            a2++;

            if (a2 > 57 && a2 <= 65) {
                //个位数满9进A
                a2 = 65;
            } else if (a2 > 90) {
                //个位数满Z进十，个位数归0
                a2 = 48;
                a1++;
            }

            //======================十位数处理========================
            if (a1 > 57 && a1 <= 65) {
                //十位数满9进A
                a1 = 65;
            } else if (a1 > 90) {
                //error，超出最大范围
                System.out.println("超出最大范围");
            }

//            System.out.println((char) a1);
//            System.out.println((char) a2);
//
//            System.out.println(s2 + ((char) a1) + ((char) a2));

            return s2 + ((char) a1) + ((char) a2);
        } catch (Exception ex) {
            log.error("生成部门编号出错, {}", ex.getMessage());
            return "";
        }
    }
}
